package com.vipertrans.token;

public enum TokenDesc {
	IDENT(null, null, TokenType.IDENT),
	NUMBER(null, null, TokenType.NUMBER),
//	STRING(null, null, TokenType.STRING),
	
	TYPEDEF("typedef", "", TokenType.KEYWORD),
	STATIC("static", "", TokenType.KEYWORD),
	VOID("void", "void", TokenType.KEYWORD),
	CHAR("char", "Character", TokenType.KEYWORD),
	BOOL("bool", "Boolean", TokenType.KEYWORD),
	SHORT("short", "Short", TokenType.KEYWORD),
	INT("int", "Integer", TokenType.KEYWORD),
	LONG("long", "Long", TokenType.KEYWORD),
	DOUBLE("double", "Double", TokenType.KEYWORD),
	SIGNED("signed", "Integer", TokenType.KEYWORD),
	UNSIGNED("unsigned", "Long", TokenType.KEYWORD),
	STRUCT("struct", "class", TokenType.KEYWORD),
	UNION("union", "class", TokenType.KEYWORD),
	ENUM("enum", "enum", TokenType.KEYWORD),
	CASE("case", "case", TokenType.KEYWORD),
	DEFAULT("default", "default", TokenType.KEYWORD),
	IF("if", "if", TokenType.KEYWORD),
	ELSE("else", "else", TokenType.KEYWORD),
	SWITCH("switch", "switch", TokenType.KEYWORD),
	WHILE("while", "while", TokenType.KEYWORD),
	DO("do", "do", TokenType.KEYWORD),
	FOR("for", "for", TokenType.KEYWORD),
	CONTINUE("continue", "continue", TokenType.KEYWORD),
	BREAK("break", "break", TokenType.KEYWORD),
	RETURN("return", "return", TokenType.KEYWORD),
	
	
	SEMICOL(";", null, TokenType.OTHERSIMBOL),
	CBRACKETL("{", null, TokenType.OTHERSIMBOL),
	CBRACKETR("}", null, TokenType.OTHERSIMBOL),
	COMMA(",", null, TokenType.OTHERSIMBOL),
	EQUALS("=", null, TokenType.OTHERSIMBOL),
	MUL("*", null, TokenType.OTHERSIMBOL),
	BRACKETL("(", null, TokenType.OTHERSIMBOL),
	BRACKETR(")", null, TokenType.OTHERSIMBOL),
	SBRACKETL("[", null, TokenType.OTHERSIMBOL),
	SBRACKETR("]", null, TokenType.OTHERSIMBOL),
	MULEQUALS("*=", null, TokenType.OTHERSIMBOL),
	DIVEQUALS("/=", null, TokenType.OTHERSIMBOL),
	MODEQUALS("%=", null, TokenType.OTHERSIMBOL),
	ADDEQUALS("+=", null, TokenType.OTHERSIMBOL),
	SUBEQUALS("-=", null, TokenType.OTHERSIMBOL),
	SHIFTEQUALSL("<<=", null, TokenType.OTHERSIMBOL),
	SHIFTEQUALSR(">>=", null, TokenType.OTHERSIMBOL),
	LOGANDEQUALS("&=", null, TokenType.OTHERSIMBOL),
	LOGXOREQUALS("^=", null, TokenType.OTHERSIMBOL),
	LOGOREQUALS("|=", null, TokenType.OTHERSIMBOL),
	QMARK("?", null, TokenType.OTHERSIMBOL),
	COLON(":", null, TokenType.OTHERSIMBOL),
	OR("||", null, TokenType.OTHERSIMBOL),
	AND("&&", null, TokenType.OTHERSIMBOL),
	LOGOR("|", null, TokenType.OTHERSIMBOL),
	LOGXOR("^", null, TokenType.OTHERSIMBOL),
	LOGAND("&", null, TokenType.OTHERSIMBOL),
	DEQUALS("==", null, TokenType.OTHERSIMBOL),
	NOTEQUALS("!=", null, TokenType.OTHERSIMBOL),
	LESS("<", null, TokenType.OTHERSIMBOL),
	GREATER(">", null, TokenType.OTHERSIMBOL),
	LESSEQUALS("<=", null, TokenType.OTHERSIMBOL),
	GREATEREQUALS(">=", null, TokenType.OTHERSIMBOL),
	SHIFTL("<<", null, TokenType.OTHERSIMBOL),
	SHIFTR(">>", null, TokenType.OTHERSIMBOL),
	ADD("+", null, TokenType.OTHERSIMBOL),
	SUB("-", null, TokenType.OTHERSIMBOL),
	DIV("/", null, TokenType.OTHERSIMBOL),
	MOD("%", null, TokenType.OTHERSIMBOL),
	INCREASE("++", null, TokenType.OTHERSIMBOL),
	DECREASE("--", null, TokenType.OTHERSIMBOL),
	INVERSE("~", null, TokenType.OTHERSIMBOL),
	NOT("!", null, TokenType.OTHERSIMBOL),
	POINT(".", null, TokenType.OTHERSIMBOL),
	ARROW("->", ".", TokenType.OTHERSIMBOL);
	
	private String value;
	private String outputValue;
	public String getOutputValue() {
		
		return outputValue;
	}

	private TokenType type;
	
	private TokenDesc(String value, String outputValue, TokenType type) {
		this.value = value;
		this.type = type;
		this.outputValue = outputValue;
	}

	public String getValue() {
		return value;
	}

	public TokenType getType() {
		return type;
	}
	
}
